In modern communications networks the processes of packet forwarding on the one hand and forwarding control on the other hand are logically separated. Packets are forwarded on the so-called data plane, while forwarding control happens on the so-called control plane.
Conventional network switches are configured so that packet forwarding on the data plane and forwarding control on the control plane take place within the same physical device. To overcome the technical limitations resulting therefrom, software-defined networking (SDN) has been proposed. SDN decouples the data plane from the control plane. While the data plane is still implemented in the switch itself, the control plane is implemented as software in a separate SDN controller that configures the forwarding states on the data plane. Based on these states, forwarding decisions are taken. For this reason the SDN controllers need no longer be co-located with the switches in a single physical device, and a single SDN controller can control multiple switches.
OpenFlow (hereinafter OF) is a communication protocol that is used to define packet forwarding in an SDN environment. OF enables an external SDN controller to configure a forwarding path through one or multiple OF switches. An OF switch therefore will be configured in accordance with the OF protocol (the current version is 1.4.0 of 15 Oct. 2013) or will be compatible therewith.
Each OF switch comprises one or more flow tables for packet ingress processing (e.g., lookup operations) and a group table for packet egress processing (e.g., forwarding operations). A communication channel stretches from each OF switch to each external SDN controller for communication based on the OF protocol. Using the OF protocol, the SDN controller can add, update and delete flow entries in the flow tables. Moreover, the SDN controller can control actions to be performed on the packets via the group table. Such control actions include forwarding control.
An OF switch is coupled to other network components (including other OF switches) via OF ports. An OF port is a network interface for passing packets between OF processing in the OF switch and the other network components. The OF switch receives packets on an ingress port. Each received packet keeps its ingress port as a property during packet ingress processing. As such, the ingress port can be used for flow table lookup operations and thus for packet forwarding control (also referred to as flow control herein). As an example, the ingress port of a packet can be used to direct that packet to an associated output port upon egress processing.
In the case of multicast or broadcast forwarding to multiple output ports, egress processing has a pre-configured setting that prevents a packet from being output via its ingress port. If a packet is actually to be output via its ingress port, an extra group table has to be written and set up by the SDN controller to include a dedicated output action to that port.
It has been found that the pre-configured OF setting that prevents a packet from being output via its ingress port does not scale well in certain traffic scenarios. For example, in an SDN environment it is often desirable to define multiple logical flow entities to permit, for example, a flow level isolation of those entities with respect to different packet transport services emulated by a particular OF switch. When, in such a scenario, a first and a second of the logical flow entities are allocated to the same OF ingress port of that OF switch, the preconfigured OF setting would prevent a packet of the first logical flow entity from being output to the second logical flow entity as both entities are allocated to the same output port. This problem could be addressed by writing and setting up an extra group table, but for N logical flow entities it would require the definition of 2N (sub-)groups (and 2N flow entries in a separate flow table to select the right group). Evidently, this scaling behaviour technically prevents allocating a large number of logical flow entities to a single OF port.